package com.leyou.item.web;

import com.leyou.item.entity.Category;
import com.leyou.item.entity.CategoryBrand;
import com.leyou.item.service.CategoryBrandService;
import com.leyou.item.service.CategoryService;
import com.leyou.item.dto.CategoryDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("category")
public class CategoryController {

    @Autowired
    private CategoryService categoryService;


   /*
   构造函数注入
   public CategoryController(CategoryService categoryService) {
        this.categoryService = categoryService;
    }*/

   /*
   * 根据id查询分类
   * localhost:8081/category/76
   * */
    @GetMapping("{id}")
    public ResponseEntity<CategoryDTO> queryCategoryById(@PathVariable("id") Long id){
        return ResponseEntity.ok(  // Ok（） 返回200 状态码和结果
                new CategoryDTO(  // 利用构造函数，将查询到的Pojo 转为DTO
                        categoryService.getById(id))); // 利用mybatis plus的ServiceImpl提供的方法查询
    }

    /*
    * 根据id集合查询分类集合
    * localhost:8081/category/list?ids=76,77,78
    * */
    @GetMapping("list")
    public ResponseEntity<List<CategoryDTO>> queryCategoryByIds(@RequestParam("ids") List<Long> ids){
        return ResponseEntity.ok(CategoryDTO.convertEntityList(categoryService.listByIds(ids)));
    }


    /*
    *根据父id=1(parent_id = 1)查询子分类  （类似于省市县 自关联）
    *
    * Category 表中 parent_id 不是主键，查询选用queryWrapper
     */
    @GetMapping("of/parent")
    public ResponseEntity<List<CategoryDTO>> queryCategoryByParentId(@RequestParam("pid") Long pid){
        return ResponseEntity.ok(
                CategoryDTO.convertEntityList(
                        categoryService.query().eq("parent_id",pid).list()
                )
        );
    }

    /*
    * 根据品牌id，查询分类集合
    *   小米： 手机，电视，耳机
    *   品牌表，分类表， 品牌分类中间表信息
    *   中间表拿到分类表的id，再去分类表查询具体的
    * */
    @GetMapping("of/brand")
    public ResponseEntity<List<CategoryDTO>> findCategoryByBrandId(@RequestParam("id") Long id){
        return  ResponseEntity.ok(categoryService.findCategoryByBrandId(id)) ;
    }
}
